/**
 * 解析页面的路由，得到由？后面的参数构成的对象
 * @param url 页面的路由
 * @returns 由？后面的参数构成的对象
 */
export function getParams(url: string) {
  const obj: Record<string, string> = {};
  try {
    const params = url.split("?");
    params.length >= 2 &&
      params[1].split("&").forEach((item) => {
        const temp = item.split("=");
        temp.length >= 2 && (obj[temp[0]] = temp[1]);
      });
  } catch (err) {
    throw new Error("传入的url有错误");
  }
  return obj;
}

interface Options {
  label: string;
  value: string;
}
/**
 * 输入一个数组，得到 Select 组件的 Options
 * @param arr 数组，每一项为字符串或者长度为2的数组。为字符串时，label、value相同；
 * 为数组时，label、value分别为数组中下标为0、1的值
 * @returns 得到 Select 组件的 Options
 */
export function getOptions(arr: Array<any>): Options[] {
  const options: Options[] = [];
  arr
    .filter((item) => item !== undefined)
    .forEach((item) => {
      if (typeof item === "string") {
        options.push({ label: item, value: item });
      } else if (Array.isArray(item)) {
        options.push({ label: item[0], value: item[1] });
      }
    });
  return options;
}
